草庐IT

Ruby Regexp : + vs *. 特殊行为?

全部标签

ruby-on-rails - 从字符串中删除重音符号/变音符号,同时保留其他特殊字符(尝试过 mb_chars.normalize 和 iconv)

有一个很similarquestion已经。其中一种解决方案使用如下代码:string.mb_chars.normalize(:kd).gsub(/[^x00-\x7F]/n,'').to_s这会产生奇迹,直到您注意到它还删除了空格、点、破折号,谁知道还有什么。我不太确定第一个代码是如何工作的,但是它可以去除仅重音吗?或者至少得到一份要保留的字符列表?我对正则表达式的了解很少,但我尝试了(无济于事):/[^\-x00-\x7F]/n#Soitwouldleavethedashalone我将要做这样的事情:string.mb_chars.normalize(:kd).gsub('-','

ruby-on-rails - ruby 包含 vs 扩展

我正在尝试将裁剪图像所需的一些逻辑抽象到一个模块中,以免弄乱我的模型。代码基于http://railscasts.com/episodes/182-cropping-imagesmoduleCroppableImagedefcroppable_image(*image_names)image_names.eachdo|image_name|define_method"#{image_name}_sizes"do{:cropped=>read_attribute("#{image_name}_size").to_s,:large=>"800x800>"}enddefine_method"

ruby - 由于带有特殊字符的 mini_magick 文件导致 watir gem 安装错误

我一直在尝试为ruby​​2安装watirgem。我完全按照watir书籍安装说明进行操作,但是一旦watir安装到达mini_magickgem,它就会出现此错误错误:执行gem时...(Errno::EINVAL)无效参数-C:/Ruby200/lib/ruby/gems/2.0.0/gems/mini_magick-3.6.0/test/文件/特别!"字符'.gif有人知道如何解决这个问题吗?我注意到nokogiri无法从ASCII转换为ITF-8的行为有点奇怪。也许这与它有关。谢谢大家 最佳答案 我遇到了同样的问题,这是我的

ruby-on-rails - Rails : Skinny Controller vs. Fat Model,还是我应该让我的 Controller 厌食?

我知道之前已经回答过类似的问题-例如:逻辑应该往哪里走在哪里做某些任务等。但我有一个更具体的问题-我应该在多大程度上采用这个公理:让你的Controller瘦,让你的模型胖!这是一个例子:例如,假设我有多个验证数据源。一个很好的例子是VIN号码-我可以根据制造商数据源、DMV数据源以及我的本地数据库对其进行验证,以查看我的记录。所以我有一个名为Vin和vins_controller的模型。在模型内部我有5种方法:check_against_local_dbcheck_against_dmvcheck_against_car_maker_1check_against_car_maker_

ruby - 运行脚本与 IRB 控制台时的不同行为?

我有一个简单的代码片段,它定义了一个方法(在Ruby的主对象上),然后检查它是否已定义。puts"#{self}#{self.class}"deffoo;endputsself.methods.include?(:foo)当我在Ruby控制台中运行它时。我得到:mainObjecttrue如果我将此代码粘贴到.rb文件中并像这样运行该文件rubytest_script.rb,我会得到以下输出mainObjectfalse我不明白为什么我会看到这种行为。方法正在在脚本中定义,因为我可以调用该方法。我都在Ruby2.3.4上运行 最佳答案

ruby-on-rails - Rails 最终用户模板引擎 : Liquid vs Mustache vs. 其他?

我正在创建一项服务,我想在其中允许最终用户编辑网页的HTML模板,允许访问特定“变量”以包含在模板中。我知道liquid正是为此目的而设计的,它是安全的(至少相对而言),并且在大量生产中使用。但是,我发现与Mustache之类的语言相比,这种语言对于最终用户来说相当复杂。Mustache听起来不错,但我担心安全问题……它是否曾经用于最终用户模板?基本上我正在寻找一个模板引擎,我可以使用w/Rails为最终用户提供:安全-不允许用户执行代码……至少不允许在服务器上执行。用户将被允许插入客户端javascript。功能强大-允许最终用户使用提供的“变量”并在#1的上下文中创建他们可以想象的

Ruby each vs while 循环性能

试图解决Ruby中的一个基本算法问题,并测试性能。为了以防万一,该算法旨在找到可被1到20之间的所有数字整除的最小正数。这是代码:defremainder(number)#withwhiledivisor=2whiledivisor在我的电脑上,对于while版本,Ruby大约需要10秒,对于每个版本,解析需要70到80秒。代码做完全相同的事情,给出相同的结果。为什么会有如此大的性能差异? 最佳答案 似乎成本是通过以下方式添加的:为范围对象(2..20)创建枚举器在each中调用block这是一个基准require'benchmar

ruby - ruby 模块 self.included 和 self.extended 行为记录在哪里?

我正在查看rubymixin博客文章,它说当一个模块包含在一个类中时,它的self.included()方法被调用。我的问题是,这种行为的正式记录在哪里?我似乎无法在ruby​​-docs.org网站或镐上找到它。 最佳答案 虽然它不在RubyDoc上出于某种原因,included实际上已被记录。在终端中运行riModule.included提供以下内容:included(othermod)Callbackinvokedwheneverthereceiverisincludedinanothermoduleorclass.Thiss

ruby-on-rails - Rails,activerecord : self[:attribute] vs self. 属性

在Rails中访问事件记录列/属性时,使用self[:attribute]与self.attribute有什么区别?这会影响getter和setter吗? 最佳答案 它们都只是获取属性的方法-它们都只是getter。self.attribtue是一个更“传统”的getter,而self[:attribute]基本上只是[]方法。在使用两者之间切换不会产生任何影响。我建议只使用self.attribute方法,因为它在语法上更好。但是,当其他内容覆盖self.attribute方法时,使用self[:attribute]会派上用场。例

ruby - 在 RSpec 测试中模拟 ActiveRecord 关系行为

我在测试时遇到过这个问题。假设我有两个模型,User和Post,其中userhas_many:posts。我正在尝试指定包含如下内容的代码块:user=User.find(123)post=user.posts.find(456)我知道如何模拟User.find和user.posts部分。user.posts模拟返回一个Post对象数组。当它到达.find(456)部分时,一切都崩溃了,并出现noblockgiven异常。所以我的问题是:作为user.postsmock的结果我要返回什么,以便.find(456)方法对其起作用?User.first.posts.class说它是Arra